LoongServe具体的调度逻辑

生成需要调度的req list

longserve_server/router/req_queue.py

Class ReqQueue

generate_new_req_list

整体逻辑

  1. 如果waiting queue为空或者running queue已经大于等于系统可支持的最大服务req数量,return[]
  2. 获取一些系统调度的参数

  3. 根据系统参数返回waiting queue的一个子集new req list

系统参数:

estimated_max_iterations = 10:

  • 初始设定的最大迭代次数为 10。

avg_num_iterations:

  • 通过历史数据计算完成请求的平均解码长度(迭代次数)。

inverted_preempted_decode_token_sum = 0:

  • 累计因抢占式解码带来的 "反向影响"(即每个请求输出 token 的倒数和),用于衡量抢占对资源的利用效率。

cur_all_used_tokens_list:

  • 之前pause的req暂存在各个卡上的token(序列并行)
  • current batch list中各Req存在各个卡上的token(序列并行)

estimated_waiting_time:

  • 该batch所预估出来的最大推理轮数*平均decode时间

num_idle_slots

  • 所有卡中剩余的总token slots空间

.......


弹性调度

longserve_server/router/manager.py

Class RouterManager

_schedule_new_req_list_with_decoding

整体逻辑:

  1. 获取

results matching ""

    No results matching ""